/*
 * File:   AbstractParser.h
 * Author: RedEyedKiller
 *
 * Created on 18 Οκτώβριος 2010, 1:20 πμ
 */

#ifndef ABSTRACTPARSER_H
#define	ABSTRACTPARSER_H

#include <list>
#include <vector>
#include "tinyxml.h"
#include "ParsingFunctions.h"

namespace FileParser
{

class AbstractParser
{
public:

    AbstractParser()
    {
    }

    virtual ~AbstractParser()
    {

    }

protected:

    void ParseIncludeList(TiXML::TiXmlElement* root);
    
    TiXML::TiXmlElement* Next(TiXML::TiXmlElement* element);

    TiXML::TiXmlElement* Next(TiXML::TiXmlElement* element, const char* name);

    template<typename T>
    T Parse(const char* data)
    {
        return ParsingFunctions::Parse<T>(data);
    }
};


}
#endif	/* ABSTRACTPARSER_H */
